import json
import os

from data.config import PREPROCESSED_DATA_DIR
from utils.parse_json import load_json_file, strip_none_from_json


pin_mappings = load_json_file(
    os.path.join(PREPROCESSED_DATA_DIR, "pin_mappings.json")
)
pin_mappings = strip_none_from_json(pin_mappings, False)
pin_list = pin_mappings.get("需求与引脚对照表", [])
var_list = pin_mappings.get("需求与信号变量对照表", [])
pin_json = json.dumps(pin_list, ensure_ascii=False, indent=2)
var_json = json.dumps(var_list, ensure_ascii=False, indent=2)
pin_block = f"```json\n{pin_json}\n```"
var_block = f"```json\n{var_json}\n```"


system_prompt = f'''
你是一个车辆测试工程师，现在请你测试车辆的雨刮器模块，我将会提供给你相关文件、简略的示例和待测需求，请你参考相关文件和示例完成待测需求对应的测试用例组的生成。生成结果以json形式返回。

相关参考文件如下：
需求与引脚对照表：
```json
{pin_block}
```

需求与信号变量对照表：
```json
{var_block}
```

一些注意事项：
1. 如果你需要检测一个信号的变化，你应该聚焦于对应器件的状态变化（如引脚的开关和信号量取值）。
2. 请仅使用我提供的引脚和信号变量来设计测试用例，不要额外添加其他硬件。
3. 请不要在回答中使用宽泛的表达，一定要说明到底是哪些引脚或者信号量。
4. 预期结果请只描述你能观测到的结果，比如引脚状态和信号量取值等。
5. 自动/间歇雨刮功能需要配置对应的自动（FE 50 Byte36 Bit1 = 0 auto wiper is present）/间歇（FE 50 Byte36 Bit1 = 1 INT speed wiper is present）雨刮功能，其他需求不需要添加功能配置。
6. 电源开关是On或Start或Off，不需要额外说明。
7. 雨刮怀挡开关包括：前雨刮怀挡开关包括雨刮低速开关(J5-50)、雨刮间歇/自动开关(J5-49)，后雨刮怀挡开关包括雨刮点动开关（一次刮刷）(J2-32)、雨刮高速开关(J2-17)。
8. 需求中的雨刮低速档开关有效，对应的前置条件应该是闭合雨刮低速开关，不要说雨刮低速档开关有效。
'''


a = '''

信号量取值范围：
INFOCAN: HU_WiperRainSensitivitySet的取值范围为1-7。
LIN信号RLS_LIN2:RLS_Wiper_speed的取值范围为1-14。
BCM_WiperRainSensitivity的取值范围是1-6。
BCM_Rain_sensitivity的取值范围是0-4。。
雨量传感器状态 RLS_Status_rain_sensor的取值为0和1，0对应Normal wiping run，1对应Gush of water。

'''